<?php

var_dump($_SESSION);//打印

$this->success('请选择要编辑的砍价商品','Task/tasklist');//提示并跳转
$this->error('新增失败');//只提示

<if condition="">
<elseif condition="" />
<else />
</if>
eq //等于
neq //不等于
gt //大于
egt //大于等于
lt //小于
elt //小于等于
like LIKE
between BETWEEN
notnull IS NUT NULL
null IS NULL

$this->assign('navig',$navig);
$this->display();
$this->ajaxReturn($html);

__PUBLIC__


%TOTAL_ROW% //总条数
%END% //末条数
%HEADER%  //共几条记录
%UP_PAGE% //上翻
%LINK_PAGE% //页码
%DOWN_PAGE% //下翻
%FIRST% //首页
%END% //末页

$this->buildHtml('静态文件', '静态路径','模板文件');//生成静态文件

import('ORG.Util.Page');//导入分页类
$page = new Page($list->where("state=1")->count(), 3);
$page->rollPage = 3;//页码显示个数
$page->setConfig('FIRST', '首页');
$page->setConfig('last', '末页');
$page->setConfig('prev','上一页');
$page->setConfig('next','下一页');
$page->setConfig('theme',"%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE%  %END%");
$this->assign('show', $page->show());

MODULE_NAME //当前模块
CONTROLLER_NAME //当前控制器
ACTION_NAME //当前方法

$User = A('User');//表示实例化当前项目的UserAction控制器 
$data = R('User/detail',array('5'));//表示调用User控制器的detail方法（detail方法必须是public类型），返回值就是查询id为5的一个用户数据。

<{:U('ddh9/ddh9_list',array('id'=>$vo['id']))}>

// 查找status值为1name值为think的用户数据
$User->where('status=1 AND name="thinkphp"')->find();
// 查找status值为1的用户数据 以创建时间排序 返回10条数据
$list = $User->where('status=1')->order('create_time')->limit(10)->select();
$nickname = $User->where('id=3')->getField('nickname');//读取字段值
$User->getField('id',true); // 获取id数组
add()//插入，添加
save()//更新
$User->where('id=5')->delete();//删除
distinct(true)->field('name')//字段去重
group('description')//字段去重
count()：//统计数据行数
max()：//统计某个字段最大数据
min()：//统计某个字段最小数据
avg()：//统计某个字段平均数据
sum()：//统计某个字段数据之和
$condition['_logic'] = 'OR';//条件查询or

like查询
$where['name']=array(array('like','%a%'),array('like','%b%'),array('like','%c%'),'jb51','or');
= (`name` LIKE '%a%') OR (`name` LIKE '%b%') OR (`name` LIKE '%c%') OR (`name` = 'jb51')

$where['_string']='(name like "%jb51%")  OR (title like "%jb51")';
= name like '%jb51%' or title like '%jb51'



getLastInsID() //获取上次执行sql的add的id
getLastSql() //获取上次执行的SQL语句
getDbError
getError
getPk
getDbFields

define('__APP__', '');//在入口文件添加去掉URL中的index.php

<{$Think.lang.$key}>	//循环输出时，输出键名

echo M("member")->getLastSql()；//打印sql语句
echo M("member")->_sql()；//打印sql语句



//模板
$this->show('<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微软雅黑"; color: #333;font-size:24px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px } a,a:hover{color:blue;}</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>欢迎使用 <b>ThinkPHP</b>！</p><br/>版本 V{$Think.version}</div><script type="text/javascript" src="http://ad.topthink.com/Public/static/client.js"></script><thinkad id="ad_55e75dfae343f5a1"></thinkad><script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script>','utf-8');//输出html代码
$this->assign('navig',$navig);//模板传值
$this->display();//模板输出
{__NOLAYOUT__} //在模板文件开头加上 {__NOLAYOUT__} 禁止模板布局







/**
+------------------------------------------------------------------------------
* ThinkPHP惯例配置文件
* 该文件请不要修改，如果要覆盖惯例配置的值，可在项目配置文件中设定和惯例不符的配置项
* 配置名称大小写任意，系统会统一转换成小写
* 所有配置参数都可以在生效前动态改变
+------------------------------------------------------------------------------
* @category Think
* @package Common
* @version $Id$
+------------------------------------------------------------------------------
*/
if (!defined('THINK_PATH')) exit();
return array(
 
/* 项目设定 */
'APP_DEBUG'   => false, // 是否开启调试模式
'APP_DOMAIN_DEPLOY'   => false,  // 是否使用独立域名部署项目
'APP_PLUGIN_ON'     => false,  // 是否开启插件机制
'APP_FILE_CASE'     => false,  // 是否检查文件的大小写 对Windows平台有效
'APP_GROUP_DEPR'    => '.',   // 模块分组之间的分割符
'APP_GROUP_LIST'    => '',   // 项目分组设定,多个组之间用逗号分隔,例如'Home,Admin'
'APP_AUTOLOAD_REG'   => false,  // 是否开启SPL_AUTOLOAD_REGISTER
'APP_AUTOLOAD_PATH'   => 'Think.Util.',// __autoLoad 机制额外检测路径设置,注意搜索顺序
'APP_CONFIG_LIST'    => array('taglibs','routes','tags','htmls','modules','actions'),// 项目额外需要加载的配置列表，默认包括：taglibs(标签库定义),routes(路由定义),tags(标签定义),(htmls)静态缓存定义, modules(扩展模块),actions(扩展操作)
 
/* Cookie设置 */
'COOKIE_EXPIRE'     => 3600,  // Coodie有效期
'COOKIE_DOMAIN'     => '',   // Cookie有效域名
'COOKIE_PATH'      => '/',   // Cookie路径
'COOKIE_PREFIX'     => '',   // Cookie前缀 避免冲突
 
/* 默认设定 */
'DEFAULT_APP'      => '@',   // 默认项目名称，@表示当前项目
'DEFAULT_GROUP'     => 'Home', // 默认分组
'DEFAULT_MODULE'    => 'Index', // 默认模块名称
'DEFAULT_ACTION'    => 'index', // 默认操作名称
'DEFAULT_CHARSET'    => 'utf-8', // 默认输出编码
'DEFAULT_TIMEZONE'   => 'PRC', // 默认时区
'DEFAULT_AJAX_RETURN'  => 'JSON', // 默认AJAX 数据返回格式,可选JSON XML ...
'DEFAULT_THEME'  => 'default', // 默认模板主题名称
'DEFAULT_LANG'     => 'zh-cn', // 默认语言
 
/* 数据库设置 */
'DB_TYPE'        => 'mysql',   // 数据库类型
'DB_HOST'        => 'localhost', // 服务器地址
'DB_NAME'        => '',     // 数据库名
'DB_USER'        => 'root',   // 用户名
'DB_PWD'        => '',     // 密码
'DB_PORT'        => 3306,    // 端口
'DB_PREFIX'       => 'think_',  // 数据库表前缀
'DB_SUFFIX'       => '',     // 数据库表后缀
'DB_FIELDTYPE_CHECK'  => false,    // 是否进行字段类型检查
'DB_FIELDS_CACHE'    => true,    // 启用字段缓存
'DB_CHARSET'      => 'utf8',   // 数据库编码默认采用utf8
'DB_DEPLOY_TYPE'    => 0, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'DB_RW_SEPARATE'    => false,    // 数据库读写是否分离 主从式有效
 
/* 数据缓存设置 */
'DATA_CACHE_TIME'  => -1,   // 数据缓存有效期
'DATA_CACHE_COMPRESS'  => false,  // 数据缓存是否压缩缓存
'DATA_CACHE_CHECK'  => false,  // 数据缓存是否校验缓存
'DATA_CACHE_TYPE'  => 'File', // 数据缓存类型,支持:File|Db|Apc|Memcache|Shmop|Sqlite| Xcache|Apachenote|Eaccelerator
'DATA_CACHE_PATH'    => TEMP_PATH,// 缓存路径设置 (仅对File方式缓存有效)
'DATA_CACHE_SUBDIR'  => false,  // 使用子目录缓存 (自动根据缓存标识的哈希创建子目录)
'DATA_PATH_LEVEL'    => 1,    // 子目录缓存级别
 
/* 错误设置 */
'ERROR_MESSAGE' => '您浏览的页面暂时发生了错误！请稍后再试～',//错误显示信息,非调试模式有效
'ERROR_PAGE'  => '', // 错误定向页面
 
/* 静态缓存设置 */
'HTML_CACHE_ON'  => false,  // 默认关闭静态缓存
'HTML_CACHE_TIME'  => 60,   // 静态缓存有效期
'HTML_READ_TYPE'    => 0,    // 静态缓存读取方式 0 readfile 1 redirect
'HTML_FILE_SUFFIX'   => '.shtml',// 默认静态文件后缀
 
/* 语言设置 */
'LANG_SWITCH_ON'    => false,  // 默认关闭多语言包功能
'LANG_AUTO_DETECT'   => true,  // 自动侦测语言 开启多语言功能后有效
 
/* 日志设置 */
'LOG_RECORD'      => false,  // 默认不记录日志
'LOG_FILE_SIZE'     => 2097152, // 日志文件大小限制
'LOG_RECORD_LEVEL'   => array('EMERG','ALERT','CRIT','ERR'),// 允许记录的日志级别
 
/* 分页设置 */
'PAGE_ROLLPAGE'     => 5,   // 分页显示页数
'PAGE_LISTROWS'     => 20,   // 分页每页显示记录数
 
/* SESSION设置 */
'SESSION_AUTO_START'  => true,  // 是否自动开启Session
// 内置SESSION类可用参数
//'SESSION_NAME'     => '',   // Session名称
//'SESSION_PATH'     => '',   // Session保存路径
//'SESSION_CALLBACK'   => '',   // Session 对象反序列化时候的回调函数
 
/* 运行时间设置 */
'SHOW_RUN_TIME'  => false,  // 运行时间显示
'SHOW_ADV_TIME'  => false,  // 显示详细的运行时间
'SHOW_DB_TIMES'  => false,  // 显示数据库查询和写入次数
'SHOW_CACHE_TIMES'  => false,  // 显示缓存操作次数
'SHOW_USE_MEM'  => false,  // 显示内存开销
'SHOW_PAGE_TRACE'  => false,  // 显示页面Trace信息 由Trace文件定义和Action操作赋值
'SHOW_ERROR_MSG'    => true,  // 显示错误信息
 
/* 模板引擎设置 */
'TMPL_ENGINE_TYPE'  => 'Think',   // 默认模板引擎 以下设置仅对使用Think模板引擎有效
'TMPL_DETECT_THEME'   => false,    // 自动侦测模板主题
'TMPL_TEMPLATE_SUFFIX' => '.html',   // 默认模板文件后缀
'TMPL_CACHFILE_SUFFIX' => '.php',   // 默认模板缓存后缀
'TMPL_DENY_FUNC_LIST' => 'echo,exit', // 模板引擎禁用函数
'TMPL_PARSE_STRING'   => '',     // 模板引擎要自动替换的字符串，必须是数组形式。
'TMPL_L_DELIM'     => '{',  // 模板引擎普通标签开始标记
'TMPL_R_DELIM'     => '}',  // 模板引擎普通标签结束标记
'TMPL_VAR_IDENTIFY'   => 'array',   // 模板变量识别。留空自动判断,参数为'obj'则表示对象
'TMPL_STRIP_SPACE'   => false,    // 是否去除模板文件里面的html空格与换行
'TMPL_CACHE_ON'  => true,    // 是否开启模板编译缓存,设为false则每次都会重新编译
'TMPL_CACHE_TIME'  => -1,     // 模板缓存有效期 -1 为永久，(以数字为值，单位:秒)
'TMPL_ACTION_ERROR'   => 'Public:success', // 默认错误跳转对应的模板文件
'TMPL_ACTION_SUCCESS'  => 'Public:success', // 默认成功跳转对应的模板文件
'TMPL_TRACE_FILE'    => THINK_PATH.'/Tpl/PageTrace.tpl.php',   // 页面Trace的模板文件
'TMPL_EXCEPTION_FILE'  => THINK_PATH.'/Tpl/ThinkException.tpl.php',// 异常页面的模板文件
'TMPL_FILE_DEPR'=>'/', //模板文件MODULE_NAME与ACTION_NAME之间的分割符，只对项目分组部署有效
// Think模板引擎标签库相关设定
'TAGLIB_BEGIN'     => '<', // 标签库标签开始标记
'TAGLIB_END'      => '>', // 标签库标签结束标记
'TAGLIB_LOAD'      => true, // 是否使用内置标签库之外的其它标签库，默认自动检测
'TAGLIB_BUILD_IN'    => 'cx', // 内置标签库名称(标签使用不必指定标签库名称),以逗号分隔
'TAGLIB_PRE_LOAD'    => '',  // 需要额外加载的标签库(须指定标签库名称)，多个以逗号分隔
'TAG_NESTED_LEVEL'  => 3,  // 标签嵌套级别
'TAG_EXTEND_PARSE'   => '',  // 指定对普通标签进行扩展定义和解析的函数名称。

/*模板主题*/
'DEFAULT_THEME'  => 'default', // 默认模板主题名称
'DEFAULT_LANG'     => 'zh-cn', // 默认语言
'THEME_LIST'   => 'default,blue', //可用主题列表

/* 表单令牌验证 */
'TOKEN_ON'          =>  true,   // 开启令牌验证
'TOKEN_NAME'        =>  '__hash__',  // 令牌验证的表单隐藏字段名称
'TOKEN_TYPE'         =>  'md5',  // 令牌验证哈希规则
 
/* URL设置 */
'URL_CASE_INSENSITIVE' => false,  // URL地址是否不区分大小写
'URL_ROUTER_ON'     => false,  // 是否开启URL路由
'URL_DISPATCH_ON'    => true, // 是否启用Dispatcher
'URL_MODEL'   => 1,    // URL访问模式,可选参数0、1、2、3,代表以下四种模式：
// 0 (普通模式); 1 (PATHINFO 模式); 2 (REWRITE 模式); 3 (兼容模式) 当URL_DISPATCH_ON开启后有效; 默认为PATHINFO 模式，提供最好的用户体验和SEO支持
'URL_PATHINFO_MODEL'  => 2,    // PATHINFO 模式,使用数字1、2、3代表以下三种模式:
// 1 普通模式(参数没有顺序,例如/m/module/a/action/id/1);
// 2 智能模式(系统默认使用的模式，可自动识别模块和操作/module/action/id/1/ 或者 /module,action,id,1/...);
// 3 兼容模式(通过一个GET变量将PATHINFO传递给dispather，默认为s index.php?s=/module/action/id/1)
'URL_PATHINFO_DEPR'   => '/', // PATHINFO模式下，各参数之间的分割符号
'URL_HTML_SUFFIX'    => '', // URL伪静态后缀设置
 
/* 系统变量名称设置 */
'VAR_GROUP'       => 'g',   // 默认分组获取变量
'VAR_MODULE'      => 'm',  // 默认模块获取变量
'VAR_ACTION'      => 'a',  // 默认操作获取变量
'VAR_ROUTER'      => 'r',   // 默认路由获取变量
'VAR_PAGE'       => 'p',  // 默认分页跳转变量
'VAR_TEMPLATE'     => 't',  // 默认模板切换变量
'VAR_LANGUAGE'     => 'l',  // 默认语言切换变量
'VAR_AJAX_SUBMIT'    => 'ajax', // 默认的AJAX提交变量
'VAR_PATHINFO'     => 's', // PATHINFO 兼容模式获取变量例如 ?s=/module/action/id/1 后面的参数取决于URL_PATHINFO_MODEL 和 URL_PATHINFO_DEPR
 
);



//模版引用
1、 使用完整文件名包含
格式：<include file="完整模板文件名" />
例如：
<include file="./Tpl/default/Public/header.html" />
这种情况下，模板文件名必须包含后缀。使用完整文件名包含的时候，特别要注意文件包含指的是服务器端包含，而不是包含一个URL地址，也就是说file参数的写法是服务器端的路径，如果使用相对路径的话，是基于项目的入口文件位置。2、包含当前模块的其他操作模板文件
格式：<include file="操作名" 
/>
例如 导入当前模块下面的read操作模版：
<include file="read" />
操作模板无需带后缀。3、 
包含其他模块的操作模板
格式：<include file="模块名:操作名" 
/>
例如，包含Public模块的header操作模版：
<include file="Public:header" />
4、包含其他模板主题的模块操作模板
格式：<include 
file="主题名:模块名:操作名" />
例如，包含blue主题的User模块的read操作模版：
<include file="blue:User:read" />
5、 用变量控制要导入的模版
格式：<include file="$变量名" 
/>
例如
<include file="$tplName" />
给$tplName赋不同的值就可以包含不同的模板文件，变量的值的用法和上面的用法相同。无论你使用什么方式包含外部模板，Include标签支持在包含文件的同时传入参数，例如，下面的例子我们在包含header模板的时候传入了title和keywords变量：
<include file="header" 
title="ThinkPHP框架"keywords="开源WEB开发框架"/>
就可以在包含的header.html文件里面使用var1和var2变量，方法
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>[title]</title>
<meta name="keywords" content="[keywords]" />
</head>
注意：由于模板解析的特点，从入口模板开始解析，如果外部模板有所更改，模板引擎并不会重新编译模板，除非在调试模式下或者缓存已经过期。如果部署模式下修改了包含的外部模板文件后，需要把模块的缓存目录清空，否则无法生效。3.1版本开始，include标签支持导入多个模板，用逗号分割即可，例如：
<include file='file1,file2' />



上面的查询条件仅仅是一个简单的相等判断，可以使用查询表达式支持更多的SQL查询语法，也是ThinkPHP查询语言的精髓，查询表达式的使用格式：
$map['字段名'] = array('表达式','查询条件');
表达式不分大小写，支持的查询表达式有下面几种，分别表示的含义是：
表达式	含义	协助记忆
EQ	等于（=）	equal
NEQ	不等于（<>）	not equal
GT	大于（>）	greater
EGT	大于等于（>=）	equal or greater
LT	小于（<）	less than
ELT	小于等于（<=）	equal or less than
LIKE	模糊查询	
[NOT] BETWEEN	（不在）区间查询	
[NOT] IN	（不在）IN 查询	
EXP	表达式查询，支持SQL语法	expression
表达式查询的用法示例如下：
EQ ：等于（=）
例如：
$map['id']  = array('eq',100);
和下面的查询等效
$map['id']  = 100;  
表示的查询条件就是 id = 100
NEQ： 不等于（<>）
例如：
$map['id']  = array('neq',100);
表示的查询条件就是 id <> 100
GT：大于（>）
例如：
$map['id']  = array('gt',100);
表示的查询条件就是 id > 100
EGT：大于等于（>=）
例如：
$map['id']  = array('egt',100);
表示的查询条件就是 id >= 100
LT：小于（<）
例如：
$map['id']  = array('lt',100);
表示的查询条件就是 id < 100
ELT： 小于等于（<=）
例如：
$map['id']  = array('elt',100);
表示的查询条件就是 id <= 100
[NOT] LIKE： 同sql的LIKE
例如：
$map['name'] = array('like','thinkphp%');
查询条件就变成 name like 'thinkphp%' 如果配置了DB_LIKE_FIELDS参数的话，某些字段也会自动进行模糊查询。例如设置了：
'DB_LIKE_FIELDS'=>'title|content'
的话，使用
$map['title'] = 'thinkphp';
查询条件就会变成 title like '%thinkphp%' 支持数组方式，例如
$map['a'] =array('like',array('%thinkphp%','%tp'),'OR');
$map['b'] =array('notlike',array('%thinkphp%','%tp'),'AND');
生成的查询条件就是：
(a like '%thinkphp%' OR a like '%tp') AND (b not like '%thinkphp%' AND b not like '%tp')
[NOT] BETWEEN ：同sql的[not] between
查询条件支持字符串或者数组，例如：
$map['id']  = array('between','1,8');
和下面的等效：
$map['id']  = array('between',array('1','8'));
查询条件就变成 id BETWEEN 1 AND 8
[NOT] IN： 同sql的[not] in
查询条件支持字符串或者数组，例如：
$map['id']  = array('not in','1,5,8');
和下面的等效：
$map['id']  = array('not in',array('1','5','8'));
查询条件就变成 id NOT IN (1,5, 8)
EXP：表达式
支持更复杂的查询情况 例如：
$map['id']  = array('in','1,3,8');
可以改成：
$map['id']  = array('exp',' IN (1,3,8) ');
exp查询的条件不会被当成字符串，所以后面的查询条件可以使用任何SQL支持的语法，包括使用函数和字段名称。查询表达式不仅可用于查询条件，也可以用于数据更新，例如：
$User = M("User"); // 实例化User对象
// 要修改的数据对象属性赋值
$data['name'] = 'ThinkPHP';
$data['score'] = array('exp','score+1');// 用户的积分加1
$User->where('id=5')->save($data); // 根据条件保存修改的数据 
©2013 ThinkPHP文档中心 由 OneThink 强力驱动



























／*****************************************************thinkphp5*******************************************************／
class Index 
{
    public function hello()
    {
        return 'hello,world!';
    }

    public function json()
    {
        return json_encode($data);
    }

    public function read()
    {
        return view();
    }

}

?>